package eu.catengine.common.iface;

import eu.catengine.common.listener.RotationListener;
import eu.catengine.primitive.Point;

public interface IRotatable
{
    /**
     * Obraca obiekt względem punktu zaczepienia (Anchor Point).
     * @param angle <code>float</code> kąt o wartości od 0 do 360 stopni.
     */
    public void rotateBy(float angle);
    
    /**
     * Obraca obiekt względem dowolnego punktu.
     * @param rotatePoint <code>Point</code> Punkt obrotu.
     * @param angle <code>float</code> kąt o wartości od 0 do 360 stopni.
     */
    public void rotateByAtPoint(Point rotatePoint, float angle);
    
    /**
     * Obraca obiekt względem dowolnego punktu.
     * @param x <code>float</code> Współrzędna obrotu dla osi X.
     * @param y <code>float</code> Współrzędna obrotu dla osi Y.
     * @param angle <code>float</code> kąt o wartości od 0 do 360 stopni.
     */
    public void rotateByAtPoint(float x, float y, float angle);

    /**
     * Obraca obiekt względem środka obiektu.
     * @param angle <code>float</code> kąt o wartości od 0 do 360 stopni.
     */
    public void rotateByAtCenter(float angle);

    /**
     * Ustawia obiekt nasłuchujący dla rotacji obiektu.
     */
    public void setRotationListener(RotationListener listener);
}
